﻿//给你一个整数数组 arr 和一个整数 difference，请你找出并返回 arr 中最长等差子序列的长度，该子序列中相邻元素之间的差等于 difference 。
//
//子序列 是指在不改变其余元素顺序的情况下，通过删除一些元素或不删除任何元素而从 arr 派生出来的序列。



int longestSubsequence(vector<int>& arr, int difference)
{
	// 创建⼀个哈希表
	unordered_map<int, int> hash; // {arr[i], dp[i]}
	hash[arr[0]] = 1; // 初始化
	int ret = 1;
	for (int i = 1; i < arr.size(); i++)
	{
		hash[arr[i]] = hash[arr[i] - difference] + 1;
		ret = max(ret, hash[arr[i]]);
	}
	return ret;
}